//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------

function write(v) { WScript.Echo(v + ""); }

function foo() {}

write(new String('he' + 'llo') << new Object());
write(new String('he' + 'llo') << new Object());
write(new String('he' + 'llo') << [1, 2, 3]);
write(new String('he' + 'llo') << [1 ,2 , 3]);
write(new String('he' + 'llo') << new Array(3));
write(new String('he' + 'llo') << Array(3));
write(new String('he' + 'llo') << new Array(1 ,2 ,3));
write(new String('he' + 'llo') << Array(1));
write(new String('he' + 'llo') << foo);
write(new Object() << undefined);
write(new Object() << null);
write(new Object() << true);
write(new Object() << false);
write(new Object() << Boolean(true));
write(new Object() << Boolean(false));
write(new Object() << new Boolean(true));
write(new Object() << new Boolean(false));
write(new Object() << NaN);
write(new Object() << +0);
write(new Object() << -0);
write(new Object() << 0);
write(new Object() << 0.0);
write(new Object() << -0.0);
write(new Object() << +0.0);
write(new Object() << 1);
write(new Object() << 10);
write(new Object() << 10.0);
write(new Object() << 10.1);
write(new Object() << -1);
write(new Object() << -10);
write(new Object() << -10.0);
write(new Object() << -10.1);
write(new Object() << Number.MAX_VALUE);
write(new Object() << Number.MIN_VALUE);
write(new Object() << Number.NaN);
write(new Object() << Number.POSITIVE_INFINITY);
write(new Object() << Number.NEGATIVE_INFINITY);
write(new Object() << new Number(NaN));
write(new Object() << new Number(+0));
write(new Object() << new Number(-0));
write(new Object() << new Number(0));
write(new Object() << new Number(0.0));
write(new Object() << new Number(-0.0));
write(new Object() << new Number(+0.0));
write(new Object() << new Number(1));
write(new Object() << new Number(10));
write(new Object() << new Number(10.0));
write(new Object() << new Number(10.1));
write(new Object() << new Number(-1));
write(new Object() << new Number(-10));
write(new Object() << new Number(-10.0));
write(new Object() << new Number(-10.1));
write(new Object() << new Number(Number.MAX_VALUE));
write(new Object() << new Number(Number.MIN_VALUE));
write(new Object() << new Number(Number.NaN));
write(new Object() << new Number(Number.POSITIVE_INFINITY));
write(new Object() << new Number(Number.NEGATIVE_INFINITY));
write(new Object() << '');
write(new Object() << 0xa);
write(new Object() << 04);
write(new Object() << 'hello');
write(new Object() << 'hel' + 'lo');
write(new Object() << String(''));
write(new Object() << String('hello'));
write(new Object() << String('h' + 'ello'));
write(new Object() << new String(''));
write(new Object() << new String('hello'));
write(new Object() << new String('he' + 'llo'));
write(new Object() << new Object());
write(new Object() << new Object());
write(new Object() << [1, 2, 3]);
write(new Object() << [1 ,2 , 3]);
write(new Object() << new Array(3));
write(new Object() << Array(3));
write(new Object() << new Array(1 ,2 ,3));
write(new Object() << Array(1));
write(new Object() << foo);
write(new Object() << undefined);
write(new Object() << null);
write(new Object() << true);
write(new Object() << false);
write(new Object() << Boolean(true));
write(new Object() << Boolean(false));
write(new Object() << new Boolean(true));
write(new Object() << new Boolean(false));
write(new Object() << NaN);
write(new Object() << +0);
write(new Object() << -0);
write(new Object() << 0);
write(new Object() << 0.0);
write(new Object() << -0.0);
write(new Object() << +0.0);
write(new Object() << 1);
write(new Object() << 10);
write(new Object() << 10.0);
write(new Object() << 10.1);
write(new Object() << -1);
write(new Object() << -10);
write(new Object() << -10.0);
write(new Object() << -10.1);
write(new Object() << Number.MAX_VALUE);
write(new Object() << Number.MIN_VALUE);
write(new Object() << Number.NaN);
write(new Object() << Number.POSITIVE_INFINITY);
write(new Object() << Number.NEGATIVE_INFINITY);
write(new Object() << new Number(NaN));
write(new Object() << new Number(+0));
write(new Object() << new Number(-0));
write(new Object() << new Number(0));
write(new Object() << new Number(0.0));
write(new Object() << new Number(-0.0));
write(new Object() << new Number(+0.0));
write(new Object() << new Number(1));
write(new Object() << new Number(10));
write(new Object() << new Number(10.0));
write(new Object() << new Number(10.1));
write(new Object() << new Number(-1));
write(new Object() << new Number(-10));
write(new Object() << new Number(-10.0));
write(new Object() << new Number(-10.1));
write(new Object() << new Number(Number.MAX_VALUE));
write(new Object() << new Number(Number.MIN_VALUE));
write(new Object() << new Number(Number.NaN));
write(new Object() << new Number(Number.POSITIVE_INFINITY));
write(new Object() << new Number(Number.NEGATIVE_INFINITY));
write(new Object() << '');
write(new Object() << 0xa);
write(new Object() << 04);
write(new Object() << 'hello');
write(new Object() << 'hel' + 'lo');
write(new Object() << String(''));
write(new Object() << String('hello'));
write(new Object() << String('h' + 'ello'));
write(new Object() << new String(''));
write(new Object() << new String('hello'));
write(new Object() << new String('he' + 'llo'));
write(new Object() << new Object());
write(new Object() << new Object());
write(new Object() << [1, 2, 3]);
write(new Object() << [1 ,2 , 3]);
write(new Object() << new Array(3));
write(new Object() << Array(3));
write(new Object() << new Array(1 ,2 ,3));
write(new Object() << Array(1));
write(new Object() << foo);
write([1, 2, 3] << undefined);
write([1, 2, 3] << null);
write([1, 2, 3] << true);
write([1, 2, 3] << false);
write([1, 2, 3] << Boolean(true));
write([1, 2, 3] << Boolean(false));
write([1, 2, 3] << new Boolean(true));
write([1, 2, 3] << new Boolean(false));
write([1, 2, 3] << NaN);
write([1, 2, 3] << +0);
write([1, 2, 3] << -0);
write([1, 2, 3] << 0);
write([1, 2, 3] << 0.0);
write([1, 2, 3] << -0.0);
write([1, 2, 3] << +0.0);
write([1, 2, 3] << 1);
write([1, 2, 3] << 10);
write([1, 2, 3] << 10.0);
write([1, 2, 3] << 10.1);
write([1, 2, 3] << -1);
write([1, 2, 3] << -10);
write([1, 2, 3] << -10.0);
write([1, 2, 3] << -10.1);
write([1, 2, 3] << Number.MAX_VALUE);
write([1, 2, 3] << Number.MIN_VALUE);
write([1, 2, 3] << Number.NaN);
write([1, 2, 3] << Number.POSITIVE_INFINITY);
write([1, 2, 3] << Number.NEGATIVE_INFINITY);
write([1, 2, 3] << new Number(NaN));
write([1, 2, 3] << new Number(+0));
write([1, 2, 3] << new Number(-0));
write([1, 2, 3] << new Number(0));
write([1, 2, 3] << new Number(0.0));
write([1, 2, 3] << new Number(-0.0));
write([1, 2, 3] << new Number(+0.0));
write([1, 2, 3] << new Number(1));
write([1, 2, 3] << new Number(10));
write([1, 2, 3] << new Number(10.0));
write([1, 2, 3] << new Number(10.1));
write([1, 2, 3] << new Number(-1));
write([1, 2, 3] << new Number(-10));
write([1, 2, 3] << new Number(-10.0));
write([1, 2, 3] << new Number(-10.1));
write([1, 2, 3] << new Number(Number.MAX_VALUE));
write([1, 2, 3] << new Number(Number.MIN_VALUE));
write([1, 2, 3] << new Number(Number.NaN));
write([1, 2, 3] << new Number(Number.POSITIVE_INFINITY));
write([1, 2, 3] << new Number(Number.NEGATIVE_INFINITY));
write([1, 2, 3] << '');
write([1, 2, 3] << 0xa);
write([1, 2, 3] << 04);
write([1, 2, 3] << 'hello');
write([1, 2, 3] << 'hel' + 'lo');
write([1, 2, 3] << String(''));
write([1, 2, 3] << String('hello'));
write([1, 2, 3] << String('h' + 'ello'));
write([1, 2, 3] << new String(''));
write([1, 2, 3] << new String('hello'));
write([1, 2, 3] << new String('he' + 'llo'));
write([1, 2, 3] << new Object());
write([1, 2, 3] << new Object());
write([1, 2, 3] << [1, 2, 3]);
write([1, 2, 3] << [1 ,2 , 3]);
write([1, 2, 3] << new Array(3));
write([1, 2, 3] << Array(3));
write([1, 2, 3] << new Array(1 ,2 ,3));
write([1, 2, 3] << Array(1));
write([1, 2, 3] << foo);
write([1 ,2 , 3] << undefined);
write([1 ,2 , 3] << null);
write([1 ,2 , 3] << true);
write([1 ,2 , 3] << false);
write([1 ,2 , 3] << Boolean(true));
write([1 ,2 , 3] << Boolean(false));
write([1 ,2 , 3] << new Boolean(true));
write([1 ,2 , 3] << new Boolean(false));
write([1 ,2 , 3] << NaN);
write([1 ,2 , 3] << +0);
write([1 ,2 , 3] << -0);
write([1 ,2 , 3] << 0);
write([1 ,2 , 3] << 0.0);
write([1 ,2 , 3] << -0.0);
write([1 ,2 , 3] << +0.0);
write([1 ,2 , 3] << 1);
write([1 ,2 , 3] << 10);
write([1 ,2 , 3] << 10.0);
write([1 ,2 , 3] << 10.1);
write([1 ,2 , 3] << -1);
write([1 ,2 , 3] << -10);
write([1 ,2 , 3] << -10.0);
write([1 ,2 , 3] << -10.1);
write([1 ,2 , 3] << Number.MAX_VALUE);
write([1 ,2 , 3] << Number.MIN_VALUE);
write([1 ,2 , 3] << Number.NaN);
write([1 ,2 , 3] << Number.POSITIVE_INFINITY);
write([1 ,2 , 3] << Number.NEGATIVE_INFINITY);
write([1 ,2 , 3] << new Number(NaN));
write([1 ,2 , 3] << new Number(+0));
write([1 ,2 , 3] << new Number(-0));
write([1 ,2 , 3] << new Number(0));
write([1 ,2 , 3] << new Number(0.0));
write([1 ,2 , 3] << new Number(-0.0));
write([1 ,2 , 3] << new Number(+0.0));
write([1 ,2 , 3] << new Number(1));
write([1 ,2 , 3] << new Number(10));
write([1 ,2 , 3] << new Number(10.0));
write([1 ,2 , 3] << new Number(10.1));
write([1 ,2 , 3] << new Number(-1));
write([1 ,2 , 3] << new Number(-10));
write([1 ,2 , 3] << new Number(-10.0));
write([1 ,2 , 3] << new Number(-10.1));
write([1 ,2 , 3] << new Number(Number.MAX_VALUE));
write([1 ,2 , 3] << new Number(Number.MIN_VALUE));
write([1 ,2 , 3] << new Number(Number.NaN));
write([1 ,2 , 3] << new Number(Number.POSITIVE_INFINITY));
write([1 ,2 , 3] << new Number(Number.NEGATIVE_INFINITY));
write([1 ,2 , 3] << '');
write([1 ,2 , 3] << 0xa);
write([1 ,2 , 3] << 04);
write([1 ,2 , 3] << 'hello');
write([1 ,2 , 3] << 'hel' + 'lo');
write([1 ,2 , 3] << String(''));
write([1 ,2 , 3] << String('hello'));
write([1 ,2 , 3] << String('h' + 'ello'));
write([1 ,2 , 3] << new String(''));
write([1 ,2 , 3] << new String('hello'));
write([1 ,2 , 3] << new String('he' + 'llo'));
write([1 ,2 , 3] << new Object());
write([1 ,2 , 3] << new Object());
write([1 ,2 , 3] << [1, 2, 3]);
write([1 ,2 , 3] << [1 ,2 , 3]);
write([1 ,2 , 3] << new Array(3));
write([1 ,2 , 3] << Array(3));
write([1 ,2 , 3] << new Array(1 ,2 ,3));
write([1 ,2 , 3] << Array(1));
write([1 ,2 , 3] << foo);
write(new Array(3) << undefined);
write(new Array(3) << null);
write(new Array(3) << true);
write(new Array(3) << false);
write(new Array(3) << Boolean(true));
write(new Array(3) << Boolean(false));
write(new Array(3) << new Boolean(true));
write(new Array(3) << new Boolean(false));
write(new Array(3) << NaN);
write(new Array(3) << +0);
write(new Array(3) << -0);
write(new Array(3) << 0);
write(new Array(3) << 0.0);
write(new Array(3) << -0.0);
write(new Array(3) << +0.0);
write(new Array(3) << 1);
write(new Array(3) << 10);
write(new Array(3) << 10.0);
write(new Array(3) << 10.1);
write(new Array(3) << -1);
write(new Array(3) << -10);
write(new Array(3) << -10.0);
write(new Array(3) << -10.1);
write(new Array(3) << Number.MAX_VALUE);
write(new Array(3) << Number.MIN_VALUE);
write(new Array(3) << Number.NaN);
write(new Array(3) << Number.POSITIVE_INFINITY);
write(new Array(3) << Number.NEGATIVE_INFINITY);
write(new Array(3) << new Number(NaN));
write(new Array(3) << new Number(+0));
write(new Array(3) << new Number(-0));
write(new Array(3) << new Number(0));
write(new Array(3) << new Number(0.0));
write(new Array(3) << new Number(-0.0));
write(new Array(3) << new Number(+0.0));
write(new Array(3) << new Number(1));
write(new Array(3) << new Number(10));
write(new Array(3) << new Number(10.0));
write(new Array(3) << new Number(10.1));
write(new Array(3) << new Number(-1));
write(new Array(3) << new Number(-10));
write(new Array(3) << new Number(-10.0));
write(new Array(3) << new Number(-10.1));
write(new Array(3) << new Number(Number.MAX_VALUE));
write(new Array(3) << new Number(Number.MIN_VALUE));
write(new Array(3) << new Number(Number.NaN));
write(new Array(3) << new Number(Number.POSITIVE_INFINITY));
write(new Array(3) << new Number(Number.NEGATIVE_INFINITY));
write(new Array(3) << '');
write(new Array(3) << 0xa);
write(new Array(3) << 04);
write(new Array(3) << 'hello');
write(new Array(3) << 'hel' + 'lo');
write(new Array(3) << String(''));
write(new Array(3) << String('hello'));
write(new Array(3) << String('h' + 'ello'));
write(new Array(3) << new String(''));
write(new Array(3) << new String('hello'));
write(new Array(3) << new String('he' + 'llo'));
write(new Array(3) << new Object());
write(new Array(3) << new Object());
write(new Array(3) << [1, 2, 3]);
write(new Array(3) << [1 ,2 , 3]);
write(new Array(3) << new Array(3));
write(new Array(3) << Array(3));
write(new Array(3) << new Array(1 ,2 ,3));
write(new Array(3) << Array(1));
write(new Array(3) << foo);
write(Array(3) << undefined);
write(Array(3) << null);
write(Array(3) << true);
write(Array(3) << false);
write(Array(3) << Boolean(true));
write(Array(3) << Boolean(false));
write(Array(3) << new Boolean(true));
write(Array(3) << new Boolean(false));
write(Array(3) << NaN);
write(Array(3) << +0);
write(Array(3) << -0);
write(Array(3) << 0);
write(Array(3) << 0.0);
write(Array(3) << -0.0);
write(Array(3) << +0.0);
write(Array(3) << 1);
write(Array(3) << 10);
write(Array(3) << 10.0);
write(Array(3) << 10.1);
write(Array(3) << -1);
write(Array(3) << -10);
write(Array(3) << -10.0);
write(Array(3) << -10.1);
write(Array(3) << Number.MAX_VALUE);
write(Array(3) << Number.MIN_VALUE);
write(Array(3) << Number.NaN);
write(Array(3) << Number.POSITIVE_INFINITY);
write(Array(3) << Number.NEGATIVE_INFINITY);
write(Array(3) << new Number(NaN));
write(Array(3) << new Number(+0));
write(Array(3) << new Number(-0));
write(Array(3) << new Number(0));
write(Array(3) << new Number(0.0));
write(Array(3) << new Number(-0.0));
write(Array(3) << new Number(+0.0));
write(Array(3) << new Number(1));
write(Array(3) << new Number(10));
write(Array(3) << new Number(10.0));
write(Array(3) << new Number(10.1));
write(Array(3) << new Number(-1));
write(Array(3) << new Number(-10));
write(Array(3) << new Number(-10.0));
write(Array(3) << new Number(-10.1));
write(Array(3) << new Number(Number.MAX_VALUE));
write(Array(3) << new Number(Number.MIN_VALUE));
write(Array(3) << new Number(Number.NaN));
write(Array(3) << new Number(Number.POSITIVE_INFINITY));
write(Array(3) << new Number(Number.NEGATIVE_INFINITY));
write(Array(3) << '');
write(Array(3) << 0xa);
write(Array(3) << 04);
write(Array(3) << 'hello');
write(Array(3) << 'hel' + 'lo');
write(Array(3) << String(''));
write(Array(3) << String('hello'));
write(Array(3) << String('h' + 'ello'));
write(Array(3) << new String(''));
write(Array(3) << new String('hello'));
write(Array(3) << new String('he' + 'llo'));
write(Array(3) << new Object());
write(Array(3) << new Object());
write(Array(3) << [1, 2, 3]);
write(Array(3) << [1 ,2 , 3]);
write(Array(3) << new Array(3));
write(Array(3) << Array(3));
write(Array(3) << new Array(1 ,2 ,3));
write(Array(3) << Array(1));
write(Array(3) << foo);
write(new Array(1 ,2 ,3) << undefined);
write(new Array(1 ,2 ,3) << null);
write(new Array(1 ,2 ,3) << true);
write(new Array(1 ,2 ,3) << false);
write(new Array(1 ,2 ,3) << Boolean(true));
write(new Array(1 ,2 ,3) << Boolean(false));
write(new Array(1 ,2 ,3) << new Boolean(true));
write(new Array(1 ,2 ,3) << new Boolean(false));
write(new Array(1 ,2 ,3) << NaN);
write(new Array(1 ,2 ,3) << +0);
write(new Array(1 ,2 ,3) << -0);
write(new Array(1 ,2 ,3) << 0);
write(new Array(1 ,2 ,3) << 0.0);
write(new Array(1 ,2 ,3) << -0.0);
write(new Array(1 ,2 ,3) << +0.0);
write(new Array(1 ,2 ,3) << 1);
write(new Array(1 ,2 ,3) << 10);
write(new Array(1 ,2 ,3) << 10.0);
write(new Array(1 ,2 ,3) << 10.1);
write(new Array(1 ,2 ,3) << -1);
write(new Array(1 ,2 ,3) << -10);
write(new Array(1 ,2 ,3) << -10.0);
write(new Array(1 ,2 ,3) << -10.1);
write(new Array(1 ,2 ,3) << Number.MAX_VALUE);
write(new Array(1 ,2 ,3) << Number.MIN_VALUE);
write(new Array(1 ,2 ,3) << Number.NaN);
write(new Array(1 ,2 ,3) << Number.POSITIVE_INFINITY);
write(new Array(1 ,2 ,3) << Number.NEGATIVE_INFINITY);
write(new Array(1 ,2 ,3) << new Number(NaN));
write(new Array(1 ,2 ,3) << new Number(+0));
write(new Array(1 ,2 ,3) << new Number(-0));
write(new Array(1 ,2 ,3) << new Number(0));
write(new Array(1 ,2 ,3) << new Number(0.0));
write(new Array(1 ,2 ,3) << new Number(-0.0));
write(new Array(1 ,2 ,3) << new Number(+0.0));
write(new Array(1 ,2 ,3) << new Number(1));
write(new Array(1 ,2 ,3) << new Number(10));
write(new Array(1 ,2 ,3) << new Number(10.0));
write(new Array(1 ,2 ,3) << new Number(10.1));
write(new Array(1 ,2 ,3) << new Number(-1));
write(new Array(1 ,2 ,3) << new Number(-10));
write(new Array(1 ,2 ,3) << new Number(-10.0));
write(new Array(1 ,2 ,3) << new Number(-10.1));
write(new Array(1 ,2 ,3) << new Number(Number.MAX_VALUE));
write(new Array(1 ,2 ,3) << new Number(Number.MIN_VALUE));
write(new Array(1 ,2 ,3) << new Number(Number.NaN));
write(new Array(1 ,2 ,3) << new Number(Number.POSITIVE_INFINITY));
write(new Array(1 ,2 ,3) << new Number(Number.NEGATIVE_INFINITY));
write(new Array(1 ,2 ,3) << '');
write(new Array(1 ,2 ,3) << 0xa);
write(new Array(1 ,2 ,3) << 04);
write(new Array(1 ,2 ,3) << 'hello');
write(new Array(1 ,2 ,3) << 'hel' + 'lo');
write(new Array(1 ,2 ,3) << String(''));
write(new Array(1 ,2 ,3) << String('hello'));
write(new Array(1 ,2 ,3) << String('h' + 'ello'));
write(new Array(1 ,2 ,3) << new String(''));
write(new Array(1 ,2 ,3) << new String('hello'));
write(new Array(1 ,2 ,3) << new String('he' + 'llo'));
write(new Array(1 ,2 ,3) << new Object());
write(new Array(1 ,2 ,3) << new Object());
write(new Array(1 ,2 ,3) << [1, 2, 3]);
write(new Array(1 ,2 ,3) << [1 ,2 , 3]);
write(new Array(1 ,2 ,3) << new Array(3));
write(new Array(1 ,2 ,3) << Array(3));
write(new Array(1 ,2 ,3) << new Array(1 ,2 ,3));
write(new Array(1 ,2 ,3) << Array(1));
write(new Array(1 ,2 ,3) << foo);
write(Array(1) << undefined);
write(Array(1) << null);
write(Array(1) << true);
write(Array(1) << false);
write(Array(1) << Boolean(true));
write(Array(1) << Boolean(false));
write(Array(1) << new Boolean(true));
write(Array(1) << new Boolean(false));
write(Array(1) << NaN);
write(Array(1) << +0);
write(Array(1) << -0);
write(Array(1) << 0);
write(Array(1) << 0.0);
write(Array(1) << -0.0);
write(Array(1) << +0.0);
write(Array(1) << 1);
write(Array(1) << 10);
write(Array(1) << 10.0);
write(Array(1) << 10.1);
write(Array(1) << -1);
write(Array(1) << -10);
write(Array(1) << -10.0);
write(Array(1) << -10.1);
write(Array(1) << Number.MAX_VALUE);
write(Array(1) << Number.MIN_VALUE);
write(Array(1) << Number.NaN);
write(Array(1) << Number.POSITIVE_INFINITY);
write(Array(1) << Number.NEGATIVE_INFINITY);
write(Array(1) << new Number(NaN));
write(Array(1) << new Number(+0));
write(Array(1) << new Number(-0));
write(Array(1) << new Number(0));
write(Array(1) << new Number(0.0));
write(Array(1) << new Number(-0.0));
write(Array(1) << new Number(+0.0));
write(Array(1) << new Number(1));
write(Array(1) << new Number(10));
write(Array(1) << new Number(10.0));
write(Array(1) << new Number(10.1));
write(Array(1) << new Number(-1));
write(Array(1) << new Number(-10));
write(Array(1) << new Number(-10.0));
write(Array(1) << new Number(-10.1));
write(Array(1) << new Number(Number.MAX_VALUE));
write(Array(1) << new Number(Number.MIN_VALUE));
write(Array(1) << new Number(Number.NaN));
write(Array(1) << new Number(Number.POSITIVE_INFINITY));
write(Array(1) << new Number(Number.NEGATIVE_INFINITY));
write(Array(1) << '');
write(Array(1) << 0xa);
write(Array(1) << 04);
write(Array(1) << 'hello');
write(Array(1) << 'hel' + 'lo');
write(Array(1) << String(''));
write(Array(1) << String('hello'));
write(Array(1) << String('h' + 'ello'));
write(Array(1) << new String(''));
write(Array(1) << new String('hello'));
write(Array(1) << new String('he' + 'llo'));
write(Array(1) << new Object());
write(Array(1) << new Object());
write(Array(1) << [1, 2, 3]);
write(Array(1) << [1 ,2 , 3]);
write(Array(1) << new Array(3));
write(Array(1) << Array(3));
write(Array(1) << new Array(1 ,2 ,3));
write(Array(1) << Array(1));
write(Array(1) << foo);
write(foo << undefined);
write(foo << null);
write(foo << true);
write(foo << false);
write(foo << Boolean(true));
write(foo << Boolean(false));
write(foo << new Boolean(true));
write(foo << new Boolean(false));
write(foo << NaN);
write(foo << +0);
write(foo << -0);
write(foo << 0);
write(foo << 0.0);
write(foo << -0.0);
write(foo << +0.0);
write(foo << 1);
write(foo << 10);
write(foo << 10.0);
write(foo << 10.1);
write(foo << -1);
write(foo << -10);
write(foo << -10.0);
write(foo << -10.1);
write(foo << Number.MAX_VALUE);
write(foo << Number.MIN_VALUE);
write(foo << Number.NaN);
write(foo << Number.POSITIVE_INFINITY);
write(foo << Number.NEGATIVE_INFINITY);
write(foo << new Number(NaN));
write(foo << new Number(+0));
write(foo << new Number(-0));
write(foo << new Number(0));
write(foo << new Number(0.0));
write(foo << new Number(-0.0));
write(foo << new Number(+0.0));
write(foo << new Number(1));
write(foo << new Number(10));
write(foo << new Number(10.0));
write(foo << new Number(10.1));
write(foo << new Number(-1));
write(foo << new Number(-10));
write(foo << new Number(-10.0));
write(foo << new Number(-10.1));
write(foo << new Number(Number.MAX_VALUE));
write(foo << new Number(Number.MIN_VALUE));
write(foo << new Number(Number.NaN));
write(foo << new Number(Number.POSITIVE_INFINITY));
write(foo << new Number(Number.NEGATIVE_INFINITY));
write(foo << '');
write(foo << 0xa);
write(foo << 04);
write(foo << 'hello');
write(foo << 'hel' + 'lo');
write(foo << String(''));
write(foo << String('hello'));
write(foo << String('h' + 'ello'));
write(foo << new String(''));
write(foo << new String('hello'));
write(foo << new String('he' + 'llo'));
write(foo << new Object());
write(foo << new Object());
write(foo << [1, 2, 3]);
write(foo << [1 ,2 , 3]);
write(foo << new Array(3));
write(foo << Array(3));
write(foo << new Array(1 ,2 ,3));
write(foo << Array(1));
write(foo << foo);
